;; RUN: wast --assert default --snapshot tests/snapshots %

(module
  (type $s0 (func))
  (type $s1 (func (param (ref $s0) (ref $s0))))
  (type $s2 (func (param (ref $s1) (ref $s1))))
  (type $s3 (func (param (ref $s2) (ref $s2))))
  (type $s4 (func (param (ref $s3) (ref $s3))))
  (type $s5 (func (param (ref $s4) (ref $s4))))
  (type $s6 (func (param (ref $s5) (ref $s5))))
  (type $s7 (func (param (ref $s6) (ref $s6))))
  (type $s8 (func (param (ref $s7) (ref $s7))))
  (type $s9 (func (param (ref $s8) (ref $s8))))
  (type $s10 (func (param (ref $s9) (ref $s9))))
  (type $s11 (func (param (ref $s10) (ref $s10))))
  (type $s12 (func (param (ref $s11) (ref $s11))))
  (type $s13 (func (param (ref $s12) (ref $s12))))
  (type $s14 (func (param (ref $s13) (ref $s13))))
  (type $s15 (func (param (ref $s14) (ref $s14))))
  (type $s16 (func (param (ref $s15) (ref $s15))))
  (type $s17 (func (param (ref $s16) (ref $s16))))
  (type $s18 (func (param (ref $s17) (ref $s17))))
  (type $s19 (func (param (ref $s18) (ref $s18))))
  (type $s20 (func (param (ref $s19) (ref $s19))))
  (type $s21 (func (param (ref $s20) (ref $s20))))
  (type $s22 (func (param (ref $s21) (ref $s21))))
  (type $s23 (func (param (ref $s22) (ref $s22))))
  (type $s24 (func (param (ref $s23) (ref $s23))))
  (type $s25 (func (param (ref $s24) (ref $s24))))
  (type $s26 (func (param (ref $s25) (ref $s25))))
  (type $s27 (func (param (ref $s26) (ref $s26))))
  (type $s28 (func (param (ref $s27) (ref $s27))))
  (type $s29 (func (param (ref $s28) (ref $s28))))
  (type $s30 (func (param (ref $s29) (ref $s29))))
  (type $s31 (func (param (ref $s30) (ref $s30))))

  (type $t0 (func))
  (type $t1 (func (param (ref $t0) (ref $t0))))
  (type $t2 (func (param (ref $t1) (ref $t1))))
  (type $t3 (func (param (ref $t2) (ref $t2))))
  (type $t4 (func (param (ref $t3) (ref $t3))))
  (type $t5 (func (param (ref $t4) (ref $t4))))
  (type $t6 (func (param (ref $t5) (ref $t5))))
  (type $t7 (func (param (ref $t6) (ref $t6))))
  (type $t8 (func (param (ref $t7) (ref $t7))))
  (type $t9 (func (param (ref $t8) (ref $t8))))
  (type $t10 (func (param (ref $t9) (ref $t9))))
  (type $t11 (func (param (ref $t10) (ref $t10))))
  (type $t12 (func (param (ref $t11) (ref $t11))))
  (type $t13 (func (param (ref $t12) (ref $t12))))
  (type $t14 (func (param (ref $t13) (ref $t13))))
  (type $t15 (func (param (ref $t14) (ref $t14))))
  (type $t16 (func (param (ref $t15) (ref $t15))))
  (type $t17 (func (param (ref $t16) (ref $t16))))
  (type $t18 (func (param (ref $t17) (ref $t17))))
  (type $t19 (func (param (ref $t18) (ref $t18))))
  (type $t20 (func (param (ref $t19) (ref $t19))))
  (type $t21 (func (param (ref $t20) (ref $t20))))
  (type $t22 (func (param (ref $t21) (ref $t21))))
  (type $t23 (func (param (ref $t22) (ref $t22))))
  (type $t24 (func (param (ref $t23) (ref $t23))))
  (type $t25 (func (param (ref $t24) (ref $t24))))
  (type $t26 (func (param (ref $t25) (ref $t25))))
  (type $t27 (func (param (ref $t26) (ref $t26))))
  (type $t28 (func (param (ref $t27) (ref $t27))))
  (type $t29 (func (param (ref $t28) (ref $t28))))
  (type $t30 (func (param (ref $t29) (ref $t29))))
  (type $t31 (func (param (ref $t30) (ref $t30))))

  (func $f (param (ref $s31))
    nop
  )

  (func $g (param (ref $t31))
    local.get 0
    call $f
  )
)
